package view;

import java.awt.CardLayout;
import java.awt.FlowLayout;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JPanel;

import model.AnzeigeModel;
import model.VerwMeldungen;
import texte.TexteObserver;
import texte.TextePanel;
import controler.Controler;
import datenbank.VerwProduktnamen;

public class Grundbild extends JPanel implements Observer {

	private AnzeigeModel model;
	private Controler controler;
	
	private JPanel pnlCardLayout;
	private JPanel pnlHandbetr;
	private JPanel pnlStartseite;
	
	private JPanel pnlMeldungen;
	private VerwMeldungen verwMeldungen;
	private VerwProduktnamen verwProduktnamen;
	
	private JPanel pnlParameter;

	/**
	 * Konstruktor
	 * 
	 * @param model
	 * @param contMenue
	 * @param verwMeldungen
	 * @param verwProduktnamen
	 */
	public Grundbild(AnzeigeModel model, Controler contMenue, VerwMeldungen verwMeldungen, VerwProduktnamen verwProduktnamen) {
		super(new FlowLayout(FlowLayout.LEFT, 0, 0));

		this.model = model;
		this.controler = contMenue;
		this.model.addObserver(this);
		
		this.verwMeldungen = verwMeldungen;
		this.verwProduktnamen = verwProduktnamen;

		initWidgets();

		addWidgets();
	}

	/**
	 * 
	 */
	private void initWidgets() {
		pnlStartseite = new Startseite(model, controler);

		pnlHandbetr = new Handbetrieb(model, controler);
		pnlParameter = new Parameter(model, controler, verwProduktnamen);

		pnlMeldungen = new Meldungen(controler, verwMeldungen);
		
		pnlCardLayout = new JPanel(new CardLayout(15,5));
	}

	/**
	 * 
	 */
	private void addWidgets() {
		pnlCardLayout.add(pnlStartseite, TextePanel.STARTSEITE);

		pnlCardLayout.add(pnlParameter, TextePanel.PARAMETER);

		pnlCardLayout.add(pnlHandbetr, TextePanel.HANDBETRIEB);

//		pnlCardLayout.add(pnlStatus, TextePanel.STATUS);
		
		pnlCardLayout.add(pnlMeldungen, TextePanel.STOERUNGEN);
		
		add(pnlCardLayout);
	}

	/**
	 * 
	 */
	public void update(Observable o, Object arg) {
		if (model == o) {
			if (arg.equals(TexteObserver.FENSTERCHANGE)) {
				CardLayout cl = (CardLayout) pnlCardLayout.getLayout();
				cl.show(pnlCardLayout, model.getAktivesFenster());
			}
		}
	}
}